/*
 *
 * Copyright 2007 by LongTop Corporation.
 * Softpack ChuangXin Building 15F, XiaMen, FuJian, PRC 361005
 *
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of
 * LongTop Corporation ("Confidential Information").  You
 * shall not disclose such Confidential Information and shall use
 * it only in accordance with the terms of the license agreement
 * you entered into with LongTop.
 *
 */

/**
 * 应用程序全局方法脚本。
 *
 * @author IntelliWeb Team
 * @version 2.o
 */


/**
 * @class 应用皮肤管理类，用于从Cookie中取出当前皮肤并进行设置：<br>
 * SkinUtil.getSkin();//取得皮肤
 * SkinUtil.setSkin(skin); //设置皮肤
 */
var SkinUtil = {};
/**
 * 取得服务端设置的皮肤
 * @detail
 * 服务端皮肤会传下var __SKIN_PATH="/intelliwebSampleCenter/resources/skins/blue/"来，
 * 该方法为了取得gray
 * @type String
 * @return 如果没有取到，则返回"blue"默认值
 * @private
 */
SkinUtil.getServerSkin = function() {
    if (typeof(__SKIN_PATH) == "undefined") return "blue";
    var _arrSkin = __SKIN_PATH.split("/");
    return _arrSkin[_arrSkin.length - 2];
}

/**
 * 设置皮肤，保存到Cookie中。并重新刷新界面。
 * @param {String} skin 可选项，如果没有设置，则取服务端__SKIN_PATH中设置的皮肤
 */
SkinUtil.setSkin = function(skin) {
    var _serverSkin = this.getServerSkin();
    //从Cookie中取得当前皮肤。
    var currSkin = Cookie.getValue("appskin");
    if (!currSkin) {
        currSkin = _serverSkin;
    }

    if (currSkin != skin) {
        if (confirm("更换皮肤会导致打开的页面关闭，是否确定进行更换？")) {
            //保存30天
            Cookie.setValue("appskin", skin, 24 * 30);
            document.location.reload();
        }
    } else {
        MsgBox.showInfoMsg("您准备更换的皮肤与当前使用的一致，不需要更换。");
    }
}

/**
 * 取得当前主界面皮肤
 */
SkinUtil.getSkin = function() {
    var _serverSkin = this.getServerSkin();
    var currSkin = Cookie.getValue("appskin");
    if (!currSkin) {
        currSkin = _serverSkin;
    }
    document.write('<link rel="stylesheet" type="text/css"  href="' + __CONTEXT_PATH + 'styles/' + currSkin + '/default.css">');
}

/**
 * 取得当前模块界面皮肤
 */
SkinUtil.getModuleSkin = function() {
    var _serverSkin = this.getServerSkin();
    var currSkin = Cookie.getValue("appskin");
    if (!currSkin) {
        currSkin = _serverSkin;
    }

    if (currSkin == _serverSkin) return;
    
    if (__SKIN_PATH) {
        var _tmpPath = __SKIN_PATH.substring(0, __SKIN_PATH.length - 1);
        var _prex = __SKIN_PATH.substring(0, _tmpPath.lastIndexOf("/"));
        __SKIN_PATH = _prex + "/" + currSkin + "/";
    }

    document.write('<link rel="stylesheet" type="text/css"  href="' + __SKIN_PATH + '/skin.css">');
}

/**
 * 动态生成输出当前皮肤脚本
 * */
SkinUtil.getModuleSkin();


/**
 * 左边2级菜单树：
 * */
function _lp_(){
	var _Rw_=event.srcElement;
	_Rw_=Element.getParent(_Rw_,"TD");
	if(_Rw_.tagName=="TD"){
		var _EX_=Element.getParent(_Rw_,"TABLE");
		var _LC_=_Rw_.menuItem;
		//alert( _Rw_.menuItem.getLabel() + " " + "path:" +  _Rw_.menuItem.path) ;

		if (_LC_ && _LC_.getPath() != null && _LC_.getPath() != "") {
			if (_LC_.target != "_blank") {
				TabUtil.openTab(
					_LC_.name, _LC_.label, _LC_.path, false, _LC_.contextRelative);
			} else {
				window.open(_LC_.path);
			}
		}else{
			if(_LC_.childItems.length<=0){
			_hE_(_LC_.menu,_LC_);
			_EX_._Nh_=true;
			}else{
				if(!_EX_._Nh_){
					_EX_._Nh_=true;
				_ln_();
			}

			}
		}
	}

};

/*【以下是：子菜单所使用的js】****************************************************************************/
var menuNum = 0 ;

function buildDatasetStr( menuName ){
	return menuItem2DatesetStr( top.main_menu_all.rootItem.getChildItemByName( menuName , true ) );
};
	
/*展开树型菜单*/
function expandAllNode(){
	var tree = $J('DataTree_Operation');
	tree.expandAll();
};

function menuItem2DatesetStr( menuItem ){
	//动态显示Panel的Caption为点击的MenuName
	var nodes = Panel1.getElementsByTagName("td");
	for(var i=0;i<nodes.length;i++){
		if(nodes[i].innerHTML=="control"){
			nodes[i].innerHTML="【"+menuItem.label+"】";
		}
	}
	menuNum = 0 ;
	 /* 获取menuItem节点 */
	var recordStr = ""	/* 递归描述子节点 */
	menuItem.sortByIndex();
	
	for( var i = 0 ; i < menuItem.childItems.length ; i ++ )
	{
		var childStr = menuItem2RecordStr( menuItem.childItems[i], 0 ) ;
		if( childStr != null && childStr.length > 0 )
		{
			if( recordStr.length > 0 )
				recordStr +="," ;
			recordStr += childStr;
		}
	}



	/* 拼接数据 */
	return '{id:"ds_menu",pageCount:1,pageNo:1,pageSize:-1,totalSize:'+ menuNum + ',fields:[{name:"menuID",label:"menuID",dataType:"long"},{name:"menuCode",label:"menuCode",dataType:"string"},{name:"menuName",label:"menuName",dataType:"string"},{name:"menuUrl",label:"menuUrl",dataType:"string"},{name:"menuParent",label:"menuParent",dataType:"long"},{name:"menuImage",label:"menuImage",dataType:"string"},{name:"menuType",label:"menuType",dataType:"integer"},{name:"disable",label:"disable",dataType:"integer"}],records:['+recordStr+"]}";
}


function menuItem2RecordStr( menuItem , parentNo) {
	if( !menuItem || !menuItem.isVisible() )
		return "";
	var currentNo = ++menuNum ;
	
	var retstr = "";

	/* 首先描述自己 */
	/* 头 */
	retstr += '{"newDatas":[' ;
	/* id , code , name , url , parent , image , type , disable */
	retstr += '"' + currentNo + '",';
	retstr += '"' + menuItem.getValue() + '",';
	retstr += '"' + Util.getEncodeStr(menuItem.getLabel()) + '",';
	retstr += '"' + Util.getEncodeStr(menuItem.getPath()) + '",';
	retstr += '"' + parentNo + '",';
	retstr += '"' + Util.getEncodeStr(menuItem.getIcon()) + '",';
	retstr += '"' + 0 + '",';
	retstr += '"' + 0 + '"';
	/* 尾 */
	retstr += "]}"
	/* 递归描述子节点 */
	menuItem.sortByIndex();
	for( var i = 0 ; i < menuItem.childItems.length ; i ++ )
	{
		var childStr = menuItem2RecordStr( menuItem.childItems[i], currentNo ) ;
		if( childStr != null && childStr.length > 0 )
		{
			retstr+="," + childStr;
		}
	}
	return retstr ;

};

function TreeNode_onClick(tree,node){
	
    var _dataset = $J('ds_menu');
	var menuUrl = _dataset.getValue('menuUrl');
	var menuName;
	/*
	if(node.level > 1){
		menuName = node.parentNode.label+'-'+_dataset.getValue('menuName');
	}else{
		menuName = _dataset.getValue('menuName');
	}
	*/
	menuName = _dataset.getValue('menuName');
	
	var menuCode = _dataset.getValue('menuCode');
	if (menuUrl == null|| menuUrl.length ==0) return;
	TabUtil.openTab(menuCode,menuName,menuUrl,true);
}
	
function openRightPage(pagePath){
	var pTar = document.getElementById("myoutlook_frame");
	var realPath=__CONTEXT_PATH+pagePath;
    	realPath=realPath.replace("//","/");
	myoutlook_frame.navigate(realPath);
};

/*【以上是：子菜单所使用的js】****************************************************************************/

/**
 * 继承方法
 */
Object.extend = function(destination, source) {
    for (var property in source) {
        destination[property] = source[property];
    }
    return destination;
}

/**
 * @class Tab标签页工具类：<br>
 * TabUtil.getSkin();//取得皮肤
 * SkinUtil.setSkin(skin); //设置皮肤
 */
var TabUtil = {};

/**
 * 取得TabSet对象
 * @type TabSet
 * @return 如果没有取到，则提示并返回null
 * @private
 */
TabUtil.getTabSet = function() {
    var tabset = $J(TabSet_Apps);
    if (tabset == null) {
        MsgBox.showErrorMsg("TabSet对象不存在！");
        return null;
    }
    return tabset;
}

/**
 * 取得父类的TabSet对象
 * @type TabSet
 * @return 如果没有取到，则提示并返回null
 * @private
 */
TabUtil.getParentTabSet = function() {
    var tabset = $J(parent.parent.TabSet_Apps);
    if (tabset == null) {
        MsgBox.showErrorMsg("TabSet对象不存在！");
        return null;
    }
    return tabset;
}

/**
 * 打开一个Tab页(如果该Tab不存在，则先创建)并激活。该方法触发onBeforeChangeTab及onAfterChangeTab事件。
 * 该方法一般由主界面的菜单调用
 * @param {String} name 必选项，Tab页名称
 * @param {String} label 可选项，Tab页标签
 * @param {String} path 可选项，Tab页装载的路径
 * @param {Boolean} reload 可选项，是否重新装载
 */
TabUtil.openTab = function(name, label, path, reload) {
    var _tabset = this.getTabSet();
    if (_tabset.tabs.length > 10) {
        MsgBox.showWarnMsg("打开的页面过多，请关闭一些不用的页面，提高响应速度！");
    }
    if (!_tabset || !name) return;
    var tab = _tabset.addTab(name);
    tab.setLabel(label);
    tab.setPath(path, Util.getBool(reload, false));
    tab.activate();
    
}

/**
 * 关闭指定的Tab页(如果tab不指定，则为当前页)。
 * 该方法一般由主界面的调用
 * @param {int|String|Tab} name 可选项，可以为页号(从0开始) 或 页名称(区分大小写) 或 页对象。
 */
TabUtil.closeTab = function(name) {
    var _tabset = this.getTabSet();
    if (!_tabset) return;
    var _tab = null;

    if (Util.isDefined(name)) {
        _tab = _tabset.getTab(name);
    }

    _tabset.removeTab(_tab);
}

/**
 * 打开一个Tab页(如果该Tab不存在，则先创建)并激活。该方法触发onBeforeChangeTab及onAfterChangeTab事件。
 * 该方法一般由具体模块调用
 * @param {String} name 必选项，Tab页名称
 * @param {String} label 可选项，Tab页标签
 * @param {String} path 可选项，Tab页装载的路径
 * @param {Boolean} reload 可选项，是否重新装载
 */
TabUtil.openParentTab = function(name, label, path, reload) {
    var tabset = this.getParentTabSet();
    if (!tabset || !name) return;
    var tab = tabset.addTab(name);
    tab.setLabel(label);
    tab.setPath(path, Util.getBool(reload, false));
    tab.activate();
}

/**
 * 关闭指定的Tab页(如果tab不指定，则为当前页)。
 * 该方法一般由具体模块调用
 * @param {int|String|Tab} name 可选项，可以为页号(从0开始) 或 页名称(区分大小写) 或 页对象。
 */
TabUtil.closeParentTab = function(name) {
    var _tabset = this.getParentTabSet();
    if (!_tabset) return;
    var _tab = null;

    if (Util.isDefined(name)) {
        _tab = _tabset.getTab(name);
    }

    _tabset.removeTab(_tab);
}
/******************【以上部分是Intelliweb基础代码自带的，下面开始是 由业务需要 自行增加的js】***********************************/

/**
 * 打开一个Tab页(如果该Tab不存在，则先创建)并激活。该方法触发onBeforeChangeTab及onAfterChangeTab事件。【胡砥峰改写于TabUtil.openTab方法，原方法不太适用】
 * 该方法一般由主界面的菜单调用
 * 
 * @param {tabset} tabset 必选项，自定义tabset对象 //如var tabset = $J(parent.parent.TabSet_Apps);
 * @param {String} name 必选项，Tab页名称
 * @param {String} label 可选项，Tab页标签
 * @param {String} path 可选项，Tab页装载的路径
 * @param {Boolean} reload 可选项，是否重新装载
 */
function openCustTab(tabset,name,label,path,reload){
	if (!tabset) return;
    var tab = tabset.getTab(name);
    if(path.indexOf("openerTabName") == -1) {
        var index = path.indexOf("?");
        var openerTabName = tabset.activeTab.name;
        if(index == -1){
        	path += "?openerTabName="+openerTabName;	
        }else{
        	path += "&openerTabName="+openerTabName;	
        }
    }
    if (!tab) {
        tab = tabset.addTab(name);
        tab.setName(name);
        tab.setLabel(label);
        tab.setPath(path);
    }
    else {
	    if(path == tab.getPath()) {
	    	if(reload) {
	    		tab.setPath(path, true);
	    	}
	    	else {
		    	tab.setReload(false);
		    }
	    }
	    else {
	    	if(reload == null || reload) {
	    		tab.setPath(path, true);
	    	}
	    	else {
		    	tab.setReload(false);
		    }
	    }
    }
    tab.activate();
}

/**
 * 打开一个Tab页(如果该Tab不存在，则先创建)并激活。该方法触发onBeforeChangeTab及onAfterChangeTab事件。【胡砥峰改写于TabUtil.openTab方法，原方法不太适用】
 * 该方法一般由主界面的菜单调用
 * 
 * @param {String} name 必选项，Tab页名称
 * @param {String} label 可选项，Tab页标签
 * @param {String} path 可选项，Tab页装载的路径
 * @param {Boolean} reload 可选项，是否重新装载
 */
function openTab(name,label,path,reload){
	var tabset = $J(parent.parent.TabSet_Apps);
	openCustTab(tabset,name,label,path,reload);
}

/**
 * 打开一个Tab页(如果该Tab不存在，则先创建)并激活。该方法触发onBeforeChangeTab及onAfterChangeTab事件。【胡砥峰改写于TabUtil.openTab方法，原方法不太适用】
 * 该方法一般由主界面的菜单调用
 * 
 * @param {tabset} tabset 必选项，自定义tabset对象 //var tabset = $J(parent.parent.TabSet_Apps);
 * @param {String} tabName 必选项，Tab页名称
 * @param {String} refresh 可选项，是否刷新
 * @param {String} commandName 可选项，command方法名称
 */
function returnToCustTab(tabset,tabName, refresh, commandName){
	if (!tabset){ 
		return;
	}
	var tmpTab = tabset.activeTab;
	//var tabName = "<%=request.getParameter("openerTabName"); %>"; 
	var tab = tabset.getTab(tabName);
	if (tab) {
	  	tabset.activateTab(tab);	  	
		if(refresh){
			try {
				var iFrame = tab.getFrame();
				if(iFrame){
					var cmd = iFrame.$J(commandName);
					if(typeof cmd != undefined && cmd != null){
						cmd.showHintInfoOnSuccess = false;
						cmd.execute();
						cmd.showHintInfoOnSuccess = true;
					}
				}
			} catch (e) {
				//alert(e);
			}
		}
	} else {
	  	tabset.activateTab();
	}
	tabset.removeTab(tmpTab);
}
/**
 * 打开一个Tab页(如果该Tab不存在，则先创建)并激活。该方法触发onBeforeChangeTab及onAfterChangeTab事件。【胡砥峰改写于TabUtil.openTab方法，原方法不太适用】
 * 该方法一般由主界面的菜单调用
 * 
 * @param {String} tabName 必选项，Tab页名称
 * @param {String} refresh 可选项，是否刷新
 * @param {String} commandName 可选项，command方法名称
 */
function returnToParentTab(tabName, refresh, commandName){
	var tabset = $J(parent.parent.TabSet_Apps);
	returnToCustTab(tabset,tabName, refresh, commandName);
}

/**
 * 定向打开指定页面
 * 
 * @param {String} iframeId 必选项，iframeId
 * @param {String} pagePath 必选项，pagePath路径
 */
function openPage(iframeId,pagePath) {
	iframeId.navigate(__CONTEXT_PATH + pagePath);
	//frames['iframeId'].location.href = __CONTEXT_PATH + pagePath;
	//document.getElementById("iframeId").src = __CONTEXT_PATH + pagePath;
}
/**
 * 重置页面自定义查询条件
 * 
 * @author SUN
 */
resetQueryCondition = function(){
	var text;
	var txtArray = Global.getControls("text");
	for(var i=0;i<txtArray.length;i++){
		text = txtArray[i];
		text.setValue("");
	}
}
/**
 * 弹出选择用户（员工）菜单，
 * 
 * @param showSelect :页面员工是否允许多选。（是否出现checkBox）
 * @param argObjs:需要带入的参数
 * 
 * @return 返回以员工ID为key，名称为value的Map类型
 * @author SUN
 */
function selectUsersFromWindow(showSelect,argObjs){
   url = __CONTEXT_PATH + "jsp/framework/sys/user/userSelectWindow.jsp";
   if (showSelect) {
	   url += "?&showSelect=" + showSelect;
   }
   var feather = "dialogWidth:700px;dialogHeight:520px;help:no;status:0;edge:sunkey;resizable:yes;";
   var str_arrays = window.showModalDialog(url, argObjs, feather);
   return  getMapArrays(str_arrays);
}

/**
 * 动态构造grid的重要代码。详细见业绩查询模块的JSP和ACITON代码
 */
function globalEval(dsScript, isRemoveAfterExe) {
	try { 
		if (dsScript) {
			var head = document.getElementsByTagName("head")[0] || document.documentElement,
			script = document.createElement("script");
			var sElement = document.getElementById("dsScript_tmp");
			if (sElement != null) {
				head.removeChild(sElement);
			}
			script.type = "text/javascript";
			script.id = "	"
			var text = dsScript.replace("<script language=\"javascript\">", "");
			text = text.replace("<\/script>", "");
			script.text = text;
			
			head.insertBefore(script, head.firstChild);
			if (isRemoveAfterExe) {
				head.removeChild(script);
			}	
			return true;
		}
	} catch(e) {
		return false;
	}
}	



/*********************String扩展********************/
String.prototype.Trim = function() { 
	return this.replace(/(^\s*)|(\s*$)/g, ""); 
} 
String.prototype.LTrim = function() { 
	return this.replace(/(^\s*)/g, ""); 
} 
String.prototype.RTrim = function() { 
	return this.replace(/(\s*$)/g, ""); 
} 
String.prototype.trimNull = function() { 
	if(this==null||this=="null"||this=="NULL"){
		return "";
	}else{
		return this;
	}
}
function iTrim(){
	var element = event.srcElement;
	var text = element.value;
	$J(element.id).setValue(text.Trim());
}
function isEmpty(str){
	return str == null || str == 'null' || str.Trim() == '' || str.Trim() == '%@|$';
}
/*********************Map面向对象扩展********************/
function Map(){
    this.array = new Array();
}
Map.prototype.put=function(key, value){
    var index = this.indexOf(key);
    if (index == -1){
        this.array.push(key);
        this.array.push(value);
    }else{
        this.array[index+1] = value;
    }
}
Map.prototype.get=function(key){
    for (var i=0,len=this.array.length; i<len; i+=2){
        if (this.array[i] == key){
            return this.array[i+1];
        }
    }
    return null;
}
Map.prototype.remove=function(key){
    var index = this.indexOf(key);
    if (index != -1){
        this.array.splice(index, 2);
    }
}
Map.prototype.keys=function(){
    var keySet = new Array();
    var len=this.array.length / 2;
    for (var i=0; i<len; i++){
        keySet.push(this.array[2*i]);
    }
    return keySet;
}
Map.prototype.toString=function(){
    var str = "{";
    for (var i=0,len=this.array.length; i<len; i+=2){
        str += (this.array[i]+":"+this.array[i+1]+"; ");
    }
    if (str.length > 1){
        str = str.substring(0, str.length-2);
    }
    str += "}";
    return str;
}
Map.prototype.indexOf=function(key){
    for (var i=0,len=this.array.length; i<len; i+=2){
        if (this.array[i] == key){
            return i;
        }
    }
    return -1;
}
Map.prototype.build=function(render){
    this.array = new Array();
    render = render.substring(1, render.length-1).split(";");
    var element, index;
    for (var i=0,len=render.length; i<len; i++){
        element = render[i];
        index = element.indexOf(":");
        this.array.push(element.substring(0, index).trim());
        this.array.push(element.substring(index+1, element.length));
    }
    return this;
}
/**
 * 把弹出框返回的字符串转换成JSON类型对象，如：{userId:001;userName:员工1},{userId:002;userName:员工2}
 */
function getMapArrays(render, splitor){
    if (splitor==null || splitor==undefined){
        splitor = "|";
    }
    var map_arrays = new Array();
    if (render!=null && render!=undefined && render.length>0){
        var str_arrays = render.split(splitor);
        for (var i=0,len=str_arrays.length; i<len; i++){
            var map = new Map();
            map = map.build(str_arrays[i]);
            map_arrays.push(map);
        }
    }
    return  map_arrays;
}
/*********************Date对象扩展********************/
/**      
 * 对Date的扩展，将 Date 转化为指定格式的String      
 * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符      
 * 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)      
 * eg:      
 * (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423      
 * (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04      
 * (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04      
 * (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04      
 * (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18      
 */        
Date.prototype.pattern=function(varFormat) {         
       var $format = varFormat || 'yyyy-M-d h:m:s'
    , $num = function(varn) { return (varn < 10 ? '0' : '') + varn; }
    , $yyyy = this.getFullYear(), $yy = $num($yyyy % 100)
    , $M = this.getMonth() + 1, $MM = $num($M)
    , $d = this.getDate(), $dd = $num($d)
    , $h = this.getHours(), $hh = $num($h)
    , $m = this.getMinutes(), $mm = $num($m)
    , $s = this.getSeconds(), $ss = $num($s);
    $format = $format.replace(/yyyy/g, $yyyy);
    $format = $format.replace(/yy/g, $yy);
    $format = $format.replace(/MM/g, $MM);
    $format = $format.replace(/M/g, $M);
    $format = $format.replace(/dd/g, $dd);
    $format = $format.replace(/d/g, $d);
    $format = $format.replace(/hh/g, $hh);
    $format = $format.replace(/HH/g, $hh);
    $format = $format.replace(/H/g, $h);
    $format = $format.replace(/h/g, $h);
    $format = $format.replace(/mm/g, $mm);
    $format = $format.replace(/m/g, $m);
    $format = $format.replace(/ss/g, $ss);
    $format = $format.replace(/s/g, $s);
    return $format;           
}
/**
* 胡砥峰 20100917
* 设置时间的偏移量,返回新时间
* @param timeStr 时间串
* @param oldPattern 旧格式
* @param newPattern 新格式
* @param fieldStr 时间区域，关键字：year、month、date、hour、minute、second
* @param offset 偏移量
* @return 时间串
*/
function getOffsetDate(timeStr, oldPattern, newPattern, fieldStr, offset){
	timeStr = changeDatePattern(timeStr,oldPattern,"yyyyMMddhhmmss");
	var year = new Number(timeStr.substring(0,4));
	var month = new Number(timeStr.substring(4,6));
	if(month==1) {
		month = 12;
		year = year -1;
	}else{
		month = month - 1;
	}
	var date = new Number(timeStr.substring(6,8));
	var hour = new Number(timeStr.substring(8,10));
	var minute = new Number(timeStr.substring(10,12));
	var second = new Number(timeStr.substring(12,14));
	if(fieldStr.toLowerCase()=="year"){
		year += offset;
	}
	else if(fieldStr.toLowerCase()=="month"){
		month += offset;
	}
	else if(fieldStr.toLowerCase()=="date"){
		date += offset;
	}
	else if(fieldStr.toLowerCase()=="hour"){
		hour += offset;
	}
	else if(fieldStr.toLowerCase()=="minute"){
		minute += offset;
	}
	else if(fieldStr.toLowerCase()=="second"){
		second += offset;
	}    
	var dateObj = new Date(year, month, date, hour, minute, second); 
	year = dateObj.getFullYear();
	month = dateObj.getMonth()+1;
	date = dateObj.getDate();
	hour = dateObj.getHours();
	minute = dateObj.getMinutes();
	second = dateObj.getSeconds();

	timeStr = year + "" + (month<10?"0"+month:month) + "" + (date<10?"0"+date:date) + "" + (hour<10?"0"+hour:hour) + "" + (minute<10?"0"+minute:minute) + "" + (second<10?"0"+second:second);
	return changeDatePattern(timeStr,"yyyyMMddhhmmss",newPattern);
}

/**
 * 胡砥峰
* 转换日期格式
* year	: yyyy; 
* month	: MM; 
* date	: dd; 
* hour	: hh; 
* minute: mm; 
* second: ss;
* @return 时间串
*/
function changeDatePattern(fromStr,fromPattern,toPattern){
	if(fromStr.length!=fromPattern.length) return "";

	var year = fromPattern.indexOf("yyyy")==-1?"0000":fromStr.substr(fromPattern.indexOf("yyyy"),4);
	var month = fromPattern.indexOf("MM")==-1?"01":fromStr.substr(fromPattern.indexOf("MM"),2);
	var date = fromPattern.indexOf("dd")==-1?"01":fromStr.substr(fromPattern.indexOf("dd"),2);
	var hour = fromPattern.indexOf("hh")==-1?"00":fromStr.substr(fromPattern.indexOf("hh"),2);
	var minute = fromPattern.indexOf("mm")==-1?"00":fromStr.substr(fromPattern.indexOf("mm"),2);
	var second = fromPattern.indexOf("ss")==-1?"00":fromStr.substr(fromPattern.indexOf("ss"),2);

	toPattern = toPattern.replace(/yyyy/g,year);
	toPattern = toPattern.replace(/MM/g,month);
	toPattern = toPattern.replace(/dd/g,date);
	toPattern = toPattern.replace(/hh/g,hour);
	toPattern = toPattern.replace(/mm/g,minute);
	toPattern = toPattern.replace(/ss/g,second);

	return toPattern;
}

/**
 * 胡砥峰
 * 获得当前日期
 */
function getNowDate(){ 
	var arg = getNowDate.arguments;
	var nowdate;
	var y = new Date().getFullYear();
	var m = new Date().getMonth()+ 1;
	if(m<10) m = '0' + m; 
	var d = new Date().getDate(); 
	if(d<10) d = '0' + d;	
	if(arg.length==1){
		nowdate = y + arg[0] + m + arg[0] + d;	
	}else{
		nowdate = y + '-' + m + '-' + d;	
	}
	return nowdate;	 
}

/**
 * 胡砥峰
 * 首页使用：比较日期和今天的是否在7天内
 * theDate:2010-09-08
 */
function compareDateToNow(theDate) {
	theDate = changeDatePattern(theDate, "yyyy-MM-dd", "yyyyMMdd");
	var todayDate = getNowDate("");
	return todayDate-theDate;
}

/**
//| 字符串转成日期类型    
//| 格式 MM/dd/YYYY MM-dd-YYYY  ||  YYYY/MM/dd YYYY-MM-dd   
 * @author SUN
 */
function StringToDate(DateStr) {    
    var converted = Date.parse(DateStr);   
    var myDate = new Date(converted);   
    if (isNaN(myDate)) {    
        //var delimCahar = DateStr.indexOf('/')!=-1?'/':'-';   
        var arys= DateStr.split('-');   
        myDate = new Date(arys[0],--arys[1],arys[2]);   
    }   
    return myDate;   
}

/**
 * 获取传入日期（Date类型）的月份第一天。
 * @date：不传入则取当前日期
 * @pattern：传入返回日期字符串的格式(不传入则取yyyy-MM-dd)
 * @return 返回日期字符串
 * @author SUN
 */
function getFirstDay(date,pattern){
	var myDate = new Date();
	if(date){
		myDate=date;
	}
    var year = myDate.getFullYear();
    var month = myDate.getMonth()+1;
    if (month<10){
        month = "0"+month;
    }
    var firstDay = year+"-"+month+"-01"
    if(pattern){
    	firstDay = changeDatePattern(firstDay,"yyyy-MM-dd",pattern);
    }
    return firstDay;
}

/**
 * 获取传入日期（Date类型）的月份最后天。
 * @date：不传入则取当前日期
 * @pattern：传入返回日期字符串的格式(不传入则取yyyy-MM-dd)
 * @return 返回日期字符串
 * @author SUN
 */
function getLastDay(date,pattern){
	var myDate = new Date();
	if(date){
		myDate=date;
	}
    var year = myDate.getFullYear();
    var month = myDate.getMonth()+1;
    if (month<10){
        month = "0"+month;
    }
	myDate = new Date(year,month,0);
	var lastDay = year+"-"+month+"-"+myDate.getDate();
    if(pattern){
    	lastDay = changeDatePattern(lastDay,"yyyy-MM-dd",pattern);
    }
    return lastDay;
}
/**
 * 保留小数点后几小数。并4舍5入。
 * @f：传入数字
 * @dec：保留几位小数
 * @author SUN
 */
function tofloat(f,dec){     
    if(dec<0)   return   "Error:dec<0!";     
    result   =   parseInt(f)+(dec==0?"":".");     
    f   -=   parseInt(f);     
    if(f==0){
    	for(var   i=0;   i<dec;   i++)   result   +=   '0';     
    }else {     
        for(var   i=0;   i<dec;   i++)   f   *=   10;     
        result   +=   parseInt(Math.round(f));     
	}     
    return   result;     
}   